﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace TP2.Lib
{
     [Serializable]
    public class FlotaCazas : Flota
    {
        const int TAMANIO_MIN_FLOTA = 1;

        public FlotaCazas(double[] posicion, int cantAviones, int[] dimensiones): base(posicion, cantAviones)
        {
            if (cantAviones >= TAMANIO_MIN_FLOTA)
            {
                int cant = 0,
                    fila = 1,
                    col = 1,
                    i = 1;

                // posicion final = (conserva el x de la posInicial; y minimo=0; z=0)
                double[] posFinal = new double[3] { this.PosicionInicial[0], dimensiones[1], 0 }; 

                /*creo el primer avion que va en el vértice de la V y le digo q va a ser el guia*/
                Caza primerCaza = new Caza(posicion, posFinal, dimensiones);
                primerCaza.EsGuia = true;
                this.Aviones.Add(primerCaza);

                double xPosInicial = primerCaza.Posicion[0];
                double yPosInicial = primerCaza.Posicion[1];
                

                while (cant < cantAviones) /*'<' porque ya el primer avion lo cree afuera*/
                {
                    double[] posicionDeUnCaza = new double[3];
                    posicionDeUnCaza[0] = xPosInicial + (primerCaza.Radio * i * col);
                    posicionDeUnCaza[1] = yPosInicial - (primerCaza.Radio * 2 * fila);
                    posicionDeUnCaza[2] = 0;
                    posFinal = new double[3] { posicionDeUnCaza[0], dimensiones[1], 0 }; 

                    Caza unCaza = new Caza(posicionDeUnCaza, posFinal, dimensiones);

                    unCaza.FlotaALaQuePertenece = this;
                    this.Aviones.Add(unCaza);                    

                    i = i * (-1);
                    cant++;

                    if ((cant % 2) == 0) /*si cantidad es par*/
                    {
                        fila++;
                        col++;
                    }
                }
            }
            else
            {
                
                throw new Exception();
                // Tratar Excepcion
            }
        }
    }
}